package com.cyt.work.kwmanagement.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.work.kwmanagement.model.po.KwTeacherSetting;
import com.cyt.work.kwmanagement.model.vo.KwKcSettingVo;
import com.cyt.work.kwmanagement.model.vo.KwTeacherExportVo;
import com.cyt.work.kwmanagement.model.vo.KwTeacherJkStaticVo;
import com.cyt.work.kwmanagement.model.vo.KwTeacherSettingVo;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.wx.model.vo.WxEducationUserVo;

import java.util.List;

/**
 * 考务教师表-考务教师表Service层接口类
 *
 * @author han jun
 * @date 2019-11-26 11:26:25
 */
public interface KwTeacherSettingService extends BaseService<KwTeacherSetting> {

    /**
     * 分页查询
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @param pageNum 分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    ReturnResult findPage(KwTeacherSettingVo kwTeacherSettingVo, int pageNum, int pageSize);

    /**
     * 分页查询
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @param pageNum 分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    ReturnResult findVoPage(KwTeacherSettingVo kwTeacherSettingVo, int pageNum, int pageSize);

    /**
     * list查询
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @return List<KwTeacherSetting>
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    List<KwTeacherSetting> findList(KwTeacherSettingVo kwTeacherSettingVo);

    /**
     * list查询
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @return List<KwTeacherSettingVo>
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    List<KwTeacherSettingVo> findVoList(KwTeacherSettingVo kwTeacherSettingVo);

    /**
     * 单个对象查询
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @return KwTeacherSetting
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    KwTeacherSetting findOne(KwTeacherSettingVo kwTeacherSettingVo);

    /**
     * 单个对象查询
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @return KwTeacherSettingVo
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    KwTeacherSettingVo findVoOne(KwTeacherSettingVo kwTeacherSettingVo);

    /**
     * 添加或更新
     *
     * @param kwTeacherSettingVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    ReturnResult addOrUpdate(KwTeacherSettingVo kwTeacherSettingVo, KwKcSettingVo kwKcSettingVo, SysUser sysUser);

    /**
     * 根据条件逻辑删除
     *
     * @param kwTeacherSettingVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    ReturnResult remove(KwTeacherSettingVo kwTeacherSettingVo, SysUser sysUser);

    /**
     * 根据条件物理删除
     *
     * @param kwTeacherSettingVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    ReturnResult delete(KwTeacherSettingVo kwTeacherSettingVo, SysUser sysUser);



    /**
     * 根据考务安排所有数据
     *
     * @param kwTeacherSettingVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:26:25
     */
    ReturnResult removeAll(KwTeacherSettingVo kwTeacherSettingVo, SysUser sysUser);

    /**
     * 根据ID获取KwTeacherSettingMap
     *
     * @param kwTeacherSettingVo 接受参数对象
     * @return KwTeacherMessage
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult getKwTeacherSettingMapById(KwTeacherSettingVo kwTeacherSettingVo);


    /**
     * 获取所有监考老师的次数
     *
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/12/12 15:22
     */
    ReturnResult getAllTeacherJkNumer(int pageNum, int pageSize);


    /**
     * 获取所有巡考老师的次数
     *
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/12/12 15:22
     */
    ReturnResult getAllTeacherXkNumer(int pageNum, int pageSize);



    /**
     * 获取所有巡考老师的次数<List>
     *
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/12/12 15:22
     */
    List<KwTeacherExportVo> getAllExportXKteacher();


    /**
     * 获取所有监考老师的次数<List>
     *
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/12/12 15:22
     */
    List<KwTeacherJkStaticVo> getAllExportJKteacher();


    /**
     * 获监巡考老师选择器
     *
     * @param wxEducationUserVo 筛选条件
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/9/26 15:59
     */
     ReturnResult selectorjxk(WxEducationUserVo wxEducationUserVo, String type, String ksId);


    /**
     * 获监巡考老师选择器
     *
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/9/26 15:59
     */
    ReturnResult selectorStudentSeatNum(String kcId, String ksId);



    /**
     * 更新保存座位信息
     *
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/9/26 15:59
     */
    ReturnResult addUpdateStudentSeatNum(String newId,String id,SysUser sysUser);

}